home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / langs / xlisp2.1 / xldist01.zoo / lsp / dragon.lsp < prev    next >
Encoding:
Lisp/Scheme  |  1990-11-09  |  1.2 KB  |  42 lines

  1. ;; DRAGON.L FOR PC-LISP V2.10
  2. ;; Modified for xlisp 2.0 (w. graphics extensions) by Tom Almy
  3. ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  4. ;;     Draw an Nth order Dragon Curve requires Turtle.l routines to run.
  5. ;; Taken From Byte April 1986. Try (DragonCurve 16) then put on supper,
  6. ;; watch the news and come back in an hour and see the results. It takes 
  7. ;; about 1/2 hour on my machine so on a normal IBM-PC it should take about
  8. ;; an 1.5 hours.
  9. ;;
  10. ;;              Peter Ashwood-Smith.
  11. ;;              April 1986
  12. ;;
  13. ;;              P.S - This dragon is nicknamed "spot"
  14.  
  15. (unless (fboundp 'TurtleGoTo)(load 'turtle))
  16.  
  17. (defun Dragon(sign level)
  18.        (if    (zerop level) 
  19.                  (TurtleForward *StepSize*)
  20.               (progn
  21.         (setq level (1- level))
  22.         (TurtleRight (* 45 sign))
  23.         (Dragon -1 level)
  24.         (TurtleLeft (* 90 sign))
  25.         (Dragon 1 level)
  26.         (TurtleRight (* 45 sign))
  27.               )
  28.        )
  29. )
  30.  
  31. (defun DragonCurve (n m)
  32.        (setq *StepSize* m)                   ; *StepSize* is global variable
  33.        (TurtleGraphicsUp)
  34.        (TurtleCenter)
  35.        (TurtleGoto 50 50)
  36.        (TurtleRight 30)                          ; angle the serpent a bit
  37.        (Dragon 1 n)
  38.        (gc)
  39. )
  40.  
  41. (print "Try (dragoncurve 14 1)")
  42.